Amazon CodeWhispererによりAWSのアクセスキーがソースコードにハードコードされていないか確認する
ソースコードにハードコードされたアクセスキーを手軽に確認する
結論
AWS Toolkitに新しく組み込まれたAmazon CodeWhisperer (以下、CodeWhisperer) のセキュリティスキャンを使用することで、ソースコードにハードコードされたAWSのアクセスキーを手軽に検出可能です。
ブログを書くに至った理由
AWSのアクセスキーの漏洩は、Developers IOに限らず、さまざまな媒体で注意喚起がなされていますが、いまだになくなりません。一度漏洩させてしまうと、なかったことにはできず、リカバリーにも大変な工数を要します。また、漏洩したアクセスキーを、悪意をもった第三者に使用されてしまった場合、ビジネス影響が懸念されます。
重要:アクセスキーの漏洩は、個人が気をつけていればいいだけの問題ではありません。チーム・組織全体の問題です。
重要:アクセスキーの漏洩は、個人が気をつけていればいいだけの問題ではありません。チーム・組織全体の問題です。
万が一、流出させてしまった場合の対応は、以下ブログがございますので、是非ともご一読ください。
昨今、Git Secretなどにより、ソースコードにハードコードされたアクセスキーを検出可能です。
しかし、CodeWhispererのセキュリティスキャン (※) でも、検出できる様になったため、本ブログにてご紹介します。
※本来は、脆弱性の検出に使用する機能ですが、ハードコードされたアクセスキーも脆弱性の一部であり検出可能です。
なお、CodeWhispererによるセキュリティスキャンは、以下ブログで解説されております。
そのため、本記事では同機能による "アクセスキーの検出" にフォーカスをあてています。
前提
前提として、Visual Studio Codeを使用します。
また、Visual Studio Codeの拡張「AWS Toolkit」を最新版 (2023/4/17時点) にアップデートする必要があります。
(CodeWhispererは、Visual Studio Code以外にIntelliJ IDEAやAWS Cloud9でも利用可能です)
具体的な方法
意図的にアクセスキーをハードコードし、CodeWhispererが検出できるか確認します。
(使用しているアクセスキーは、AWSが公式ドキュメントで使用している サンプルのアクセスキー です)
import boto3 client = boto3.client( aws_access_key_id="AKIAIOSFODNN7EXAMPLE", aws_secret_access_key="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", )
手順
1. AWS Builder IDでログイン
2. 左ペインの「AWS Tools」をクリック
3.「DEVELOPER TOOLS」->「CodeWhisperer」と展開
4.「Run Security Scan」をクリック
実行してみると、「問題」パネルにてissuesを検出しました。
内容より、共通脆弱性タイプの「CWE-798」に該当していることが分かります。
また、Amazon CodeGuru Detector Libraryのドキュメントだと、Hardcoded credentials に該当していることが確認できました。
CWE-798 - Hardcoded credentials:
Access credentials, such as passwords and access keys, should not be hardcoded in source code.
Hardcoding credentials may cause leaks even after removing them.
This is because version control systems might retain older versions of the code.
Credentials should be stored securely and obtained from the runtime environment.
補足
コメントアウトされているアクセスキーは、問題として検出されませんでした。
〆
CodeWhispererのセキュリティスキャンにより、アクセスキーを検出できる様になりました。
Git Secretの様に、コミットのタイミングではなく、"任意のタイミング" かつ "手元で手軽に" という点が魅力的だと感じました。
Git Secretの様に、コミットのタイミングではなく、"任意のタイミング" かつ "手元で手軽に" という点が魅力的だと感じました。
最後に重要なことですので、もう一度繰り返します。
アクセスキー漏洩は、個人が気をつけていればいいだけの問題ではありません。チーム・組織全体の問題です。
Git Secretの導入はもちろんのことですが、是非CodeWhispererの併用もご検討ください。
この記事をきっかけに、1件でもアクセスキー漏洩が減れば幸いです。
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。
「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。
現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。
少しでもご興味あれば、アノテーション株式会社WEBサイト をご覧ください。
「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。
現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。
少しでもご興味あれば、アノテーション株式会社WEBサイト をご覧ください。